﻿using System;
using System.Collections.Generic;
using Xamarin.Forms;

namespace MasterDetailTemplate.Services
{
    /// <summary>
    /// 缓存的根页面激活服务。
    /// By XJ
    /// </summary>
    public class CachedRootPageActivationService : IRootPageActivationService
    {
        /******** 公开变量 ********/

        /******** 私有变量 ********/

        /// <summary>
        /// 页面缓存。
        /// </summary>
        private Dictionary<string, NavigationPage> cache =
            new Dictionary<string, NavigationPage>();

        /******** 继承方法 ********/

        /// <summary>
        /// 激活根页面。
        /// </summary>
        /// <param name="pageKey">页面键。</param>
        public NavigationPage Activate(string pageKey) =>
            cache.ContainsKey(pageKey)
                ? cache[pageKey]
                : cache[pageKey] = new NavigationPage(
                    (ContentPage)Activator.CreateInstance(
                        RootNavigationServiceConstants.PageKeyTypeDictionary[
                            pageKey]));

        /******** 公开方法 ********/

        /******** 私有方法 ********/
    }
}
